#1、写函数,将传入的列表或元祖对象的奇数位索引对应的元素
#a = [1,2,3,4,5,6,7]
#print(a[1],a[3],a[5])
"""
def b(c):
    for i in range(len(c)):
        if i % 2 != 0:
            print(c[i])
b(a)
"""
"""
def b(c):
    return(a[1::2])
b(a)
print(b(a))
"""
#2、写函数,判断用户传入的对象(string,list,tuple)长度是否大于5
"""
#不用函数
con=(1,2,321,3,21,321)
if type(con) == str and len(con) > 5:
    print("是字符串且长度大于五")
elif type(con) == str and len(con)< 5:
    print("是字符串且长度小于五")
elif type(con) == list and len(con) > 5:
     print("是列表且长度大于5")
elif type(con) == list and len(con) < 5:
    print("是列表且长度小于五")
elif type(con) == tuple and len(con) > 5:
    print("是元组且长度大于五")
elif type(con) == tuple and len(con) < 5:
    print("是元组且长度小于五")
"""
"""
def a(con):
    if type(con) == str and len(con) > 5:
        print("是字符串且长度大于五")
    elif type(con) == str and len(con) < 5:
        print("是字符串且长度小于五")
    elif type(con) == list and len(con) > 5:
        print("是列表且长度大于5")
    elif type(con) == list and len(con) < 5:
        print("是列表且长度小于五")
    elif type(con) == tuple and len(con) > 5:
        print("是元组且长度大于五")
    elif type(con) == tuple and len(con) < 5:
        print("是元组且长度小于五")
a("1te4gergerg")
a([1,2,3,4,5,3])
a((1,2,3,4,6,6,5,5,6,6))
"""
#3、写函数,计算传入的string中,数字,字母,空格以及其它内容的个数,并返回结果
"""
a=input("输入任意")
shuzi =0
zimu =0
kongge =0
qita =0
for i in a:
    if i in "0123456789":
        shuzi +=1
    if i in " ":
        kongge +=1
    if (i>="a" and i<="z") or (i>="A" and i<="Z"):
        zimu +=1
    else:
        qita+=1
print((f"数字有{shuzi}个，字母有{zimu}个，空格有{zimu}个，其他有{qita}个"))
"""
"""
def con(a):
    shuzi = 0
    zimu = 0
    kongge = 0
    qita = 0
    for i in a:
        if i in "0123456789":
            shuzi += 1
        elif i in " ":
            kongge += 1
        elif (i >= "a" and i <= "z") or (i >= "A" and i <= "Z"):
            zimu += 1
        else:
            qita += 1
    print((f"数字有{shuzi}个，字母有{zimu}个，空格有{kongge}个，其他有{qita}个"))
con("$qeew   dwdwdw")
"""
#4、写函数,接收两个数字参数,返回较大的那个数字
"""
a = int(input("输入第一个数字"))
b = int(input("输入第二个数字"))
if a>b:
    print(f"最大数是{a}")
else:
    print(f"最大数是{b}")
"""
"""
def con(a,b):
    if a > b:
        return (f"最大数是{a}")
    else:
        return (f"最大数是{b}")
print(con(10,20))
"""
"""
def cc(a,b):
    if a > b:
        print(f"最大数是{a}")
    else:
        print(f"最大数是{b}")
cc(10,20)
"""
#5、编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.
"""
a = input("输入任意")
print(tuple(a))
"""
"""
def con(*a):
    return a
b=input("输入任意数字")
print(con(b))
"""
#6、编写一个函数, 接收字符串参数, 返回一个元组,元组的第一个值为大写字母的个数, 第二个值为小写字母个数.
"""
a = input("输入任意字符串")
daxie = 0
xiaoxie = 0
for i in a:
    if i>="a" and i<="z":
        xiaoxie +=1
    elif i>="A" and i<="Z":
        daxie+=1
c=(daxie,xiaoxie)
print(tuple(c))
"""
"""
def con(a):
    daxie = 0
    xiaoxie = 0
    for i in a:
      if i>="a" and i<="z":
        xiaoxie +=1
      elif i>="A" and i<="Z":
        daxie+=1
    return daxie,xiaoxie
print(con("sdfsafFdwaAEWFA"))
"""
#7、编写函数, 接收一个列表(包含30个1~100之间的随机整形数)和一个整形数k, 返回一个新列表.
#函数需求:
#将列表下标k之前对应(不包含k)的元素逆序;
#将下标k及之后的元素逆序;
"""
def list1(k):
    import random
    a= []
    for i in range(30):
        b = random.randint(1, 100)
        a.append(b)
    print(a)
    list1_kqian=a[:k][::-1]
    list1_khou=a[k:][::-1]
    return list1_kqian+list1_khou
print(list1(5))
"""
#8、编写函数，从键盘输入参数x和n，计算并显示形如x+xx +xxx + xxxx + xxxxx+xxx…xxx+ 的表达式前n项的值

#9、写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,地址
"""
def a(name,  age, add,sex='男'):
    print("姓名：", name)
    print("性别：", sex)
    print("年龄：", age)
    print("地址：", add)
a("张", 23, "沈阳")
"""
#10、写函数,接收n个数字,返回这些数字的和(动态传参)
"""
def con(*a):
    return sum(a)
con(1,2,3,5)
con(1,2,5,6,3,6,5,5)
"""

#11、在实参中传入多个可迭代对象(要有string,list,tuple,set,dict),将每个对象的每个元素都加到args或kwargs里

#12、写函数,把传过来的列表中的每一个元素都用"_"拼接,并返回

#13、写函数,传入一个数字,返回这个数的阶乘。示例：1x2x3....

#14、写函数,返回一个扑克牌列表,里面有52项,每一项都是一个tuple

#15、编写函数，求1+2+3+…N的和

#16、编写一个函数，求多个数中的最大值
"""
def con(*a):
    for i in a:
        b=max(a)
    return b
print(con(1,2,3,4,5,6))
"""
#17、编写一个函数，提取指定字符串中所有的字母，然后拼接在一起产生一个新的字符串

#18、写一个函数，求多个数的平均值
"""
def con(*a):
        b = sum(a) / len(a)
        return  b
print(con(1,2,3,4,5,6))
"""
#19、写一个自己的len函数，统计指定序列中元素的个数

#20、找出传入的列表或元组的奇数位对应的元素，并返回一个新的列表
"""
def con(a):
    return a[0::2]
print(con([1,2,3,4,5,6]))
"""
#21、水仙花数：个位、十位、百位的立方加在一起等于数的本身

#22、 定义函数，有一个形参，传入的是列表，数组大小不超过 100个，
#数组中的每个元素值不允许超过 100，但是可以等于100，
#如果列表大小超过了100个截取到第100个为止，要求返回的列表格式：
#删除所有重复元素，使得每个元素只出现一次
#按照数字的大小，由高到低排序返回

#23、定义函数 getLength，打印用户传入的容器类型和数据长度
"""
def getLength(a):
    b=[type(a),len(a)]
    print(b)
    return b
getLength([1,2,3,4,5])
getLength("1,2,3,4,5")
getLength((1,2,3,4,5))
"""
#24、定义函数 generateNum( )

#25、定义函数 moreThan(num)，判断输入的数字是否大于1500
"""
def moreThan(num):
    if num > int(1500):
        print("大于1500")
    elif num == int(1500):
        print("等于1500")
    elif num < int(1500):
        print("小于1500")
    return num
moreThan(1400)
moreThan(20000)
moreThan(1500)
"""
#26、定义函数，有两个形参，第一个形参到第二个形参的范围，所有平方数之和

#27、写函数，检查传入字典的每一个value长度，如果大于2，那么仅保留前两个长度的内容， 并将新内容返回给调用者

#28、写函数，判断用户传入的对象（字符串、列表、元组）的元素是否为空
"""
def con(a):
    if len(a) == 0:
        print("是空的")
    else:
        print("不是空的")
        return a
con((1,2,2,3))
con(())
con([1,2,2,3])
con([])
con("1,2,2,3")
con("")
"""
#29、编写自定义函数，完成一个简单的减法运算函数
"""
def con(a,b):
    return a-b
print(con(10,20))
"""
#30、编写自定义函数，可以输出自己的名字即可。
"""
def name():
    print("zhangyong")
name()
"""
#31、编写自定义函数：剪刀石头布
#游戏开始，初始状态下用户和电脑都有 100 分，赢一局+10 分，输一局-10 分。
#当用户为 0 分时，游戏结束，提示游戏结束，比赛输了
#当用户为 200 分时，游戏结束，提示游戏结束，赢得比赛、每轮比赛都输出当前的分数
#1 代表剪刀 2 代表石头 3 代表布

#32、编写一个函数，接受一个字符串作为参数，并返回该字符串的逆序字符串
"""
def con(a):
    return a[::-1]
print(con("abcdefg"))
"""
#33、编写一个函数，接受一个数字列表作为参数，并返回其中所有偶数的列表
"""
a = [1,2,3,4,5,6,7]
b=[]
for i in a:
    if i % 2 ==0:
        b.append(i)
print(b)
"""
"""
def con(*a):
    b = []
    for i in a:
        if i % 2 == 0:
            b.append(i)
    return b
"""
#34、编写一个函数，接受一个字符串列表作为参数，并返回其中最长的字符串。
"""
a = ["dw","d","dwad","dwa"]
b = max(a, key=len)
print(b)
"""
"""
def con(a):
    b = max(a, key=len)
    print(b)
con(["dwa","dwadaw","fweewgwegwgwg","wdadsadd","5566665"])
"""
#35、编写一个函数，接受一个数字列表作为参数，并返回其中所有数字的平方的总#和
"""
a = [1,2,3,4,5,6,7]
b = sum(i**2 for i in a)
print(b)
"""
"""
def con(a):
    b = sum(i ** 2 for i in a)
    print(b)
con([1,2,3,4,5,6,7,8,9,10])
"""
#36、编写一个函数，接受一个字符串作为参数，并返回其中所有单词的首字母的大写形式
"""
a = "dwad wda dwa "
print(a.title())
"""
"""
def con(a):
    return a.title()
print(con("dw zy yong"))
"""
#37、编写一个函数，接受两个列表作为参数，并返回两个列表的交集
#举例：
#list1 = [100,200,300,454]
#list2 = [454,789,125,46]
#返回：[454]
"""
def con(a,b):
    c=[]
    for i in a:
        for t in b:
          if i==t:
            c.append(i)
    print(c)
con([55,66,9,99,3],[77,55,66,99,555])
"""
#38、定义一个学生注册函数enroll()，打印学生姓名，性别，年龄，城市， 使用默认参数降低调用函数的复杂度
"""
def enroll():
    a= input("姓名：")
    b= input("性别：")
    c= input("年龄：")
    d= input("城市：")
    return a,b,c,d
print(enroll())
"""